// Display object (with 3D object attached)
// Graham Morgan and Jan Allbeck
//
// Modified by Nick Kitten to refactor behavior;
// Adds scale and textures to PoseableObject
// 2009


 #ifndef DISPLAY3DOBJ_H
 #define DISPLAY3DOBJ_H
 
 #include "DarkGDK.h"
 #include "PoseableObject.h"
 #include "Utilities.h"



class TexturedObj : public PoseableObject
{

	public:
		
		TexturedObj();

		// should really only use this constructor
		TexturedObj(char* filename, int id);
		~TexturedObj();

		void applyTexture(char* filename);  // apply the specified texture to the object
		
		int getTextureID() const;					// return the object's texture ID
		Triple getScale() const;					// return a copy of the object's scale
		float getScaleX() const;					// return the x coordinate of the scale
		float getScaleY() const;					// return the y coordinate of the scale
		float getScaleZ() const;					// return the z coordinate of the scale

		void setPosition(float x, float y, float z);		// set the object's current position
		void setRotation(float x, float y, float z);		// set the object's current orientation
		void setScale(float x, float y, float z);		// set the object's current scale

		void hide();						// do not display this object
		void show();						// display this object
		
	protected:
		int texture;		// The DarkGDK texture ID
		Triple scale;		// Scale of the object in 3D space
};

 #endif /* DISPLAY3DOBJ_H */